<template>
  <div class="container">
    <!-- van-tabs:标签页组件
         v-model：设置默认的激活项目，激活项目是根据项目的下标，默认从0开始
         van-tab:标签页项目组件
         title：标签名称
         内容区域：是标签对应内容
    -->
    <van-tabs v-model="activeChannelIndex">
      <!-- 三杠按钮 -->
      <!-- 给标签页设置图标，用法是命名插槽
           slot="nav-left/right" 图标放置的位置
           class="channel-more"  下述设置css样式
      -->
      <div slot="nav-right" class="channel-more" @click="showPopup=true">
        <!-- 图标  name="wap-nav" 3杠图标 icon组件提供 -->
        <van-icon name="wap-nav" />
      </div>
      <van-tab :title="item.name" v-for="item in channelList" :key="item.id">
        <!-- 将当前激活的频道的id当做参数传递给子组件，以获得对应的文章 -->
        <com-article :channelID="item.id"></com-article>
      </van-tab>
    </van-tabs>

    <!-- 应用子组件的弹出层 -->
    <!-- 频道操作
         :channelList="channelList" 把当前用户拥有的频道传递给频道组件里边显示
         :activeChannelIndex="activeChannelIndex" 当前激活频道项目的下标
    -->
    <!-- :activeChannelIndex.sync="activeChannelIndex":加上sync 表示允许子组件做修改 -->
    <com-channel
      v-model="showPopup"
      :channelList="channelList"
      :activeChannelIndex.sync="activeChannelIndex"
    ></com-channel>
  </div>
</template>

<script>
// 导入三杠按钮的弹出层
import ComChannel from './components/com-channel'

// 导入获取频道真实数据的api函数
import { apiChannelList } from '@/api/channel.js'

// 导入文章瀑布组件
import ComArticle from './components/com-article.vue'

export default {
  name: 'home-index',
  components: {
    ComArticle,
    ComChannel
  },
  data () {
    return {
      // 设置频道的默认激活项目
      activeChannelIndex: 0,

      // 频道列表数据
      channelList: [],

      // 控制三杠按钮的弹出层显示
      showPopup: false
    }
  },
  created () {
    // 自动获取频道数据，第一时间获取
    this.getChannelList()
  },
  methods: {
    // 1.获取频道列表数据的函数
    async getChannelList () {
      const result = await apiChannelList()
      // console.log(result)
      this.channelList = result.channels
    }
  }
}
</script>

<style scoped lang='less'>
.van-tabs {
  // 弹性布局
  display: flex;
  // 灵活的项目将垂直显示，正如一个列一样
  flex-direction: column;
  height: 100%;
  // /deep/ 深度作用选择器   加上/deep/的目的：使得标签身上不要设置data-v-xxx的样式属性(因为它本来也没上，默认加上就找不到对应的标签了)
  /deep/ .van-tabs__content {
    // flex:1;的值是1 1 0%，【父控件有剩余空间占1份放大，父控件空间不足按1缩小，自身的空间大小是0%】
    flex: 1;
    overflow: hidden;
  }
  /deep/ .van-tab__pane {
    height: 100%;
  }
  // 给频道下边沿横向设置样式
  /deep/ .van-tabs__line {
    background-color: #1989fa;
  }

  /*给 更多 频道设置样式*/
  .channel-more {
    position: fixed;
    right: 0;
    background-color: white;
    line-height: 88px;
    height: 88px;
    width: 90px;
    text-align: center;
    font-size: 40px;
  }
  /*频道标签页减小一些*/
  /deep/ .van-tabs__wrap {
    width: 90%; /*设置频道列表最大宽度，可以避免最后一个频道被按钮覆盖住*/
  }
}
</style>
